package com.study.spark.scala.rdd

import org.apache.spark.{SparkConf, SparkContext}

/**
  * 广播变量使用示例
  *
  * @author stephen
  * @create 2019-03-15 10:21
  * @since 1.0.0
  */
object BroadcastVariableDemo {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
      .setMaster("local[*]")
      .setAppName("BroadcastVariable Demo")
    val sc = new SparkContext(conf)
    // 在driver端设置广播变量
    val broadcastVar = sc.broadcast(10)

    val rdd = sc.parallelize(List(1,2,3,4,5,6,7,8,9))

    val result = rdd.map({
      // 在task端使用广播变量
      // 每个元素都加上广播变量过来的值
      _ + broadcastVar.value
    }).collect()

    println(result.toBuffer)

    sc.stop()
  }
}
